#include "GlobalHeader.h"
#include "StdSem.h"

int semID = 0;
void signalHandler(int sig)
{
    exit(1);
}

void RemoveSem()
{
    sleep(1);
    printf("退出删除信号量\n");
    semctl(semID,0,IPC_RMID,NULL);
}


int main()
{
    atexit(RemoveSem);
    signal(SIGQUIT,signalHandler);

    Sem *s = InitSem("./",3);
    pid_t pid = fork();
    if(pid < 0)
    {
        perror("fork");
        return -1;
    }
    if(pid == 0)
    {
        while(1)
        {
            semP(s);
            printf("子进程进入睡眠\n");
            sleep(1);
            printf("子进程醒来\n");
            semV(s);
        } 
    }
    else
    {
        while(1)
        {
            semP(s);
            printf("父进程进入睡眠\n");
            sleep(1);
            printf("父进程醒来\n");
            semV(s);
        }
    }
    return 0;
}